#pragma once

namespace CO { namespace SpiFoundation { namespace RoomFW {

class SimpleEventTestSuite : public Test::Suite
{
public:
	SimpleEventTestSuite();
	
private:
	void manualSignaled(void);
	void manualUnsignaled(void);
	void autoSignaled(void);
	void autoUnsignaled(void);
	void copy(void);
	void close(void);
	void wait(void);
	static const DWORD MaxWait = 2000; // 2 seconds
	typedef std::pair<CO::SpiFoundation::RoomFW::SimpleEvent, CO::SpiFoundation::RoomFW::SimpleEvent> EventPair;
	typedef std::pair<SimpleEventTestSuite*, EventPair*> ThreadArg;
	static void ThreadProc(void* arg);
	void waitProc(EventPair* pair);
};

}}}
